﻿using System.ComponentModel;

namespace JGSY.SerialCommunication.UpperComputer.Core.EnumType
{
    /// <summary>
    /// 字节序（Endianness）类型枚举，定义多字节数据在内存或网络传输中的字节排列顺序。
    /// 支持从 2 字节（16 位）到 8 字节（64 位）的排列方式。
    /// </summary>
    public enum EndianType
    {
        #region 2 字节（16 位）排列方式
        /// <summary>
        /// 大端序（Big-Endian），高位字节在前，低位字节在后。
        /// 示例: 0x1234 → [0x12, 0x34]
        /// </summary>
        [Description("大端序 (高位在前)")]
        AB,

        /// <summary>
        /// 小端序（Little-Endian），低位字节在前，高位字节在后。
        /// 示例: 0x1234 → [0x34, 0x12]
        /// </summary>
        [Description("小端序 (低位在前)")]
        BA,
        #endregion

        #region 4 字节（32 位）排列方式
        /// <summary>
        /// 标准大端序（Big-Endian），高位字节在前。
        /// 示例: 0x12345678 → [0x12, 0x34, 0x56, 0x78]
        /// </summary>
        [Description("标准大端序 (ABCD)")]
        ABCD,

        /// <summary>
        /// 标准小端序（Little-Endian），低位字节在前。
        /// 示例: 0x12345678 → [0x78, 0x56, 0x34, 0x12]
        /// </summary>
        [Description("标准小端序 (DCBA)")]
        DCBA,

        /// <summary>
        /// 字交换序（Word Swap），按 16 位字交换。
        /// 示例: 0x12345678 → [0x34, 0x12, 0x78, 0x56]
        /// </summary>
        [Description("字交换序 (BADC)")]
        BADC,

        /// <summary>
        /// 双字交换序（DWord Swap），按 32 位双字交换。
        /// 示例: 0x12345678 → [0x56, 0x78, 0x12, 0x34]
        /// </summary>
        [Description("双字交换序 (CDAB)")]
        CDAB,
        #endregion

        #region 8 字节（64 位）排列方式
        /// <summary>
        /// 标准大端序（Big-Endian），高位字节在前。
        /// 示例: 0x1122334455667788 → [0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88]
        /// </summary>
        [Description("标准大端序 (ABCDEFGH)")]
        ABCDEFGH,

        /// <summary>
        /// 标准小端序（Little-Endian），低位字节在前。
        /// 示例: 0x1122334455667788 → [0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11]
        /// </summary>
        [Description("标准小端序 (HGFEDCBA)")]
        HGFEDCBA,

        /// <summary>
        /// 双字交换序（DWord Swap），按 32 位双字交换。
        /// 示例: 0x1122334455667788 → [0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44]
        /// </summary>
        [Description("双字交换序 (GHEFCDAB)")]
        GHEFCDAB, // 修正为正确的双字交换

        /// <summary>
        /// 字交换序（Word Swap），按 16 位字交换。
        /// 示例: 0x1122334455667788 → [0x22, 0x11, 0x44, 0x33, 0x66, 0x55, 0x88, 0x77]
        /// </summary>
        [Description("字交换序 (BADCFEHG)")]
        BADCFEHG,
        #endregion
    }
}